﻿<!DOCTYPE html>
<html>

<head>
	<title>疫情数据可视化分析</title>
	<meta http-equiv="Content-type" content="text/html;charset=UTF-8">

	<style>
		/* https://github.com/microsoft/vscode/blob/master/extensions/markdown-language-features/media/markdown.css */
		/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

		body {
			font-family: var(--vscode-markdown-font-family, -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif);
			font-size: var(--vscode-markdown-font-size, 14px);
			padding: 0 26px;
			line-height: var(--vscode-markdown-line-height, 22px);
			word-wrap: break-word;
		}

		#code-csp-warning {
			position: fixed;
			top: 0;
			right: 0;
			color: white;
			margin: 16px;
			text-align: center;
			font-size: 12px;
			font-family: sans-serif;
			background-color: #444444;
			cursor: pointer;
			padding: 6px;
			box-shadow: 1px 1px 1px rgba(0, 0, 0, .25);
		}

		#code-csp-warning:hover {
			text-decoration: none;
			background-color: #007acc;
			box-shadow: 2px 2px 2px rgba(0, 0, 0, .25);
		}

		body.scrollBeyondLastLine {
			margin-bottom: calc(100vh - 22px);
		}

		body.showEditorSelection .code-line {
			position: relative;
		}

		body.showEditorSelection .code-active-line:before,
		body.showEditorSelection .code-line:hover:before {
			content: "";
			display: block;
			position: absolute;
			top: 0;
			left: -12px;
			height: 100%;
		}

		body.showEditorSelection li.code-active-line:before,
		body.showEditorSelection li.code-line:hover:before {
			left: -30px;
		}

		.vscode-light.showEditorSelection .code-active-line:before {
			border-left: 3px solid rgba(0, 0, 0, 0.15);
		}

		.vscode-light.showEditorSelection .code-line:hover:before {
			border-left: 3px solid rgba(0, 0, 0, 0.40);
		}

		.vscode-light.showEditorSelection .code-line .code-line:hover:before {
			border-left: none;
		}

		.vscode-dark.showEditorSelection .code-active-line:before {
			border-left: 3px solid rgba(255, 255, 255, 0.4);
		}

		.vscode-dark.showEditorSelection .code-line:hover:before {
			border-left: 3px solid rgba(255, 255, 255, 0.60);
		}

		.vscode-dark.showEditorSelection .code-line .code-line:hover:before {
			border-left: none;
		}

		.vscode-high-contrast.showEditorSelection .code-active-line:before {
			border-left: 3px solid rgba(255, 160, 0, 0.7);
		}

		.vscode-high-contrast.showEditorSelection .code-line:hover:before {
			border-left: 3px solid rgba(255, 160, 0, 1);
		}

		.vscode-high-contrast.showEditorSelection .code-line .code-line:hover:before {
			border-left: none;
		}

		img {
			max-width: 100%;
			max-height: 100%;
			text-align: center;
		}

		a {
			text-decoration: none;
			display: inline-block;
			text-align: center;
			text-decoration: none;
			color: azure;
			padding-left: 10px;
			padding-right: 10px;
		}

		a:hover {
			text-decoration: underline;
		}

		a:focus,
		input:focus,
		select:focus,
		textarea:focus {
			outline: 1px solid -webkit-focus-ring-color;
			outline-offset: -1px;
		}

		hr {
			border: 0;
			height: 2px;
			border-bottom: 2px solid;
		}

		h2,
		h3,
		h4 {
			font-weight: normal;
			text-align: center;
			line-height: 1.2;
			padding-bottom: 10px;
			border-bottom-style: dashed;
		}

		h2 {
			border-bottom-width: 2px;
		}

		h3 {
			border-bottom-width: 1px;
		}

		h4 {
			border-bottom-width: 0px;
		}

		h1 {
			font-weight: normal;
			text-align: center;
			line-height: 1.2;
			padding-bottom: 0.3em;
			border-bottom-width: 2px;
			border-bottom-style: solid;
		}

		table {
			border-collapse: collapse;
		}

		table>thead>tr>th {
			text-align: left;
			border-bottom: 1px solid;
		}

		table>thead>tr>th,
		table>thead>tr>td,
		table>tbody>tr>th,
		table>tbody>tr>td {
			padding: 5px 10px;
		}

		table>tbody>tr+tr>td {
			border-top: 1px solid;
		}

		blockquote {
			margin: 0 7px 0 5px;
			padding: 0 16px 0 10px;
			border-left-width: 5px;
			border-left-style: solid;
		}

		code {
			font-family: Menlo, Monaco, Consolas, "Droid Sans Mono", "Courier New", monospace, "Droid Sans Fallback";
			font-size: 1em;
			line-height: 1.357em;
		}

		body.wordWrap pre {
			white-space: pre-wrap;
		}

		pre:not(.hljs),
		pre.hljs code>div {
			padding: 16px;
			border-radius: 3px;
			overflow: auto;
		}

		pre code {
			color: var(--vscode-editor-foreground);
			tab-size: 4;
		}

		/** Theming */

		.vscode-light pre {
			background-color: rgba(220, 220, 220, 0.4);
		}

		.vscode-dark pre {
			background-color: rgba(10, 10, 10, 0.4);
		}

		.vscode-high-contrast pre {
			background-color: rgb(0, 0, 0);
		}

		.vscode-high-contrast h1 {
			border-color: rgb(0, 0, 0);
		}

		.vscode-light table>thead>tr>th {
			border-color: rgba(0, 0, 0, 0.69);
		}

		.vscode-dark table>thead>tr>th {
			border-color: rgba(255, 255, 255, 0.69);
		}

		.vscode-light h1,
		.vscode-light hr,
		.vscode-light table>tbody>tr+tr>td {
			border-color: rgba(0, 0, 0, 0.18);
		}

		.vscode-dark h1,
		.vscode-dark hr,
		.vscode-dark table>tbody>tr+tr>td {
			border-color: rgba(255, 255, 255, 0.18);
		}
	</style>

	<style>
		/* Tomorrow Theme */
		/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */
		/* Original theme - https://github.com/chriskempson/tomorrow-theme */

		/* Tomorrow Comment */
		.hljs-comment,
		.hljs-quote {
			color: #8e908c;
		}

		/* Tomorrow Red */
		.hljs-variable,
		.hljs-template-variable,
		.hljs-tag,
		.hljs-name,
		.hljs-selector-id,
		.hljs-selector-class,
		.hljs-regexp,
		.hljs-deletion {
			color: #c82829;
		}

		/* Tomorrow Orange */
		.hljs-number,
		.hljs-built_in,
		.hljs-builtin-name,
		.hljs-literal,
		.hljs-type,
		.hljs-params,
		.hljs-meta,
		.hljs-link {
			color: #f5871f;
		}

		/* Tomorrow Yellow */
		.hljs-attribute {
			color: #eab700;
		}

		/* Tomorrow Green */
		.hljs-string,
		.hljs-symbol,
		.hljs-bullet,
		.hljs-addition {
			color: #718c00;
		}

		/* Tomorrow Blue */
		.hljs-title,
		.hljs-section {
			color: #4271ae;
		}

		/* Tomorrow Purple */
		.hljs-keyword,
		.hljs-selector-tag {
			color: #8959a8;
		}

		.hljs {
			display: block;
			overflow-x: auto;
			color: #4d4d4c;
			padding: 0.5em;
		}

		.hljs-emphasis {
			font-style: italic;
		}

		.hljs-strong {
			font-weight: bold;
		}
	</style>

	<style>
		/*
 * Markdown PDF CSS
 */

		body {
			font-family: -apple-system, BlinkMacSystemFont, "Segoe WPC", "Segoe UI", "Ubuntu", "Droid Sans", sans-serif, "Meiryo";
			padding: 0 12px;
		}

		pre {
			background-color: #f8f8f8;
			border: 1px solid #cccccc;
			border-radius: 3px;
			overflow-x: auto;
			white-space: pre-wrap;
			overflow-wrap: break-word;
		}

		pre:not(.hljs) {
			padding: 23px;
			line-height: 19px;
		}

		blockquote {
			background: rgba(127, 127, 127, 0.1);
			border-color: rgba(0, 122, 204, 0.5);
		}

		.emoji {
			height: 1.4em;
		}

		code {
			font-size: 14px;
			line-height: 19px;
		}

		/* for inline code */
		:not(pre):not(.hljs)>code {
			color: #C9AE75;
			/* Change the old color so it seems less like an error */
			font-size: inherit;
		}

		/* Page Break : use <div class="page"/> to insert page break
-------------------------------------------------------- */
		.page {
			page-break-after: always;
		}
	</style>

	<script src="https://unpkg.com/mermaid/dist/mermaid.min.js"></script>
</head>

<body>
	<script>
		mermaid.initialize({
			startOnLoad: true,
			theme: document.body.classList.contains('vscode-dark') || document.body.classList.contains('vscode-high-contrast')
				? 'dark'
				: 'default'
		});
	</script>
	<script src="https://cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script>
	<script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script>
	<script type="text/javascript" src="https://assets.pyecharts.org/assets/maps/world.js"></script>
	<script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts-wordcloud.min.js"></script>
	<script type="text/javascript" src="https://assets.pyecharts.org/assets/maps/china.js"></script>

	<div id="links" style="line-height: 36px; background-color:black;">
		<a href="/">数据分析与可视化</a>
		<a href="/document">技术文档</a>
		<a href="/nlp">舆论分析notebook</a>
		<a href="/analyse">趋势预测notebook</a>
	</div>

	<div style="margin-left: auto;margin-right: 
auto;max-width: 900px;background-color:ivory;padding-left: 15px;padding-right: 15px;">

		<h1
			id="%E7%96%AB%E6%83%85%E7%A9%BA%E9%97%B4%E6%95%B0%E6%8D%AE%E4%B8%8E%E8%88%86%E6%83%85%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E5%8F%AF%E8%A7%86%E5%8C%96">
			疫情空间数据与舆情数据分析可视化</h1>
		<p>新型冠状病毒肺炎（COVID-19，简称“新冠肺炎”）疫情肆虐全球多个国家，2020年3月11日，世界卫生组织 (WHO) 正式宣布将新冠肺炎列为全球性大流行病。</p>
		<p>在全球抗击新型冠状病毒疫情的过程中，产生了前所未有的大规模疫情数据，利用大数据分析技术和方法能够协助发现病毒传染源、监测疫情发展、调配救援物资，从而更好地进行疫情防控工作。空间数据分析作为大数据分析的重要组成，将数据智能处理、直观展示和交互分析有机地结合，使机器智能和人类智慧深度融合、优势互补，为疫情防控中的分析、指挥和决策提供有效依据和指南。
		</p>
		<p>本项目希望能利用交互式空间数据分析技术，感知和预测疫情发展趋势与关键节点、分析社交媒体话题与情感的动态演变、对社会舆情进行态势感知。</p>
		<h2 id="%E6%89%80%E4%BD%BF%E7%94%A8%E7%9A%84%E6%95%B0%E6%8D%AE%E9%9B%86">所使用的数据集：</h2>
		<ul>
			<li>疫情统计时空数据，分为国内各省市疫情统计数据及世界各国疫情统计数据，包括从1.19至5.19四个月时间的确诊人数、现存确诊人数、治愈人数、死亡人数等</li>
			<li>中国社会组织公共服务平台疫情防控专区新闻1400+篇，包含时间、标题、正文内容、作者等</li>
			<li>依据与“新冠肺炎”相关的230个主题关键词进行数据采集的2020年1月1日—2020年2月20日期间共计100万条微博数据</li>
		</ul>
		<p>部分数据经爬虫采集，部分数据采用公开数据集；可视化部分采用pyecharts+flask实现动态交互</p>
		<h2
			id="part-1%E7%96%AB%E6%83%85%E7%A9%BA%E9%97%B4%E6%95%B0%E6%8D%AE%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96%E6%80%81%E5%8A%BF%E6%84%9F%E7%9F%A5%E8%B6%8B%E5%8A%BF%E5%88%86%E6%9E%90">
			Part 1：疫情空间数据数据可视化态势感知、趋势分析：</h2>
		<h3
			id="%E7%96%AB%E6%83%85%E6%95%B0%E6%8D%AE%E5%8A%A8%E6%80%81%E4%BA%A4%E4%BA%92%E5%8F%AF%E8%A7%86%E5%8C%96%E5%9C%B0%E5%9B%BE">
			疫情数据动态交互可视化地图</h3>
		<p>共有三种地图类型：现存确诊率地图、累计死亡人数地图、死亡率（累计死亡人数/累计确诊人数）地图，可以通过下拉框进行选择；</p>
		<p>可以拖动时间轴上的滑块改变地图显示日期，范围为 1.19-5.19；</p>
		<div id="current-maps">
			<div>
				<label>请选择地图类型: </label>
				<select name="select-map" id="mapselecter">
					<option value="0">现存确诊人数</option>
					<option value="1">累计死亡人数</option>
					<option value="2">死亡率（死亡/确诊）</option>
				</select>
			</div>
			<div>
				<label>拖动滑块即可切换日期:</label>
				<input id='slider' style="width: 400px;vertical-align: middle;" type='range' min='0' max='121'
					step='1' />
			</div>
			<div id="worldMap" class="maps" style="width:800px; height:600px;display: inline-block;"></div>
			<div id="chinaMap" class="maps" style="width:800px; height:600px;display: inline-block;"></div>
		</div>
		<p>通过交互分析可以发现：</p>
		<ul>
			<li>
				<p>现存确诊人数图</p>
				<ul>
					<li>在1.20日左右，全国公布的疫情一开始出现在广东、湖北、北京上海等地，此时湖北的疫情确诊人数已经突破200；</li>
					<li>此后，疫情从湖北开始向四周身份成扩散趋势，在1.26日湖北的确诊人数已经突破1000；除湖北外，浙江与广东确诊人数也到达三位数；国外在美国、澳大利亚、法国和泰国等东南亚国家也出现确诊病例；
					</li>
					<li>在2.2日前后，湖北的确诊人数突破五位数，其他地区疫情人数继续增加；国外疫情也在欧洲、东南亚、美洲呈缓慢扩散趋势</li>
					<li>在2月中旬，西藏成为国内首个清零的省份；国外继续缓慢增长；国内疫情迎来拐点，现存确诊人数趋于平缓、不再增加，并开始缓慢减少；现存确诊人数约为50000左右，其中大部分集中在湖北；</li>
					<li>二月底三月初，国内确诊人数逐渐减少，国外此时开始大规模出现感染并扩散到多个国家；此时意大利、伊朗疫情较为严重；疫情开始扩散到非洲、南美洲；</li>
					<li>三月中旬后，国内疫情已经基本得到控制，大多省份恢复到个位数或清零，绝大多数现存确诊病例集中在湖北；而世界上大部分国家都已出现确诊报告，许多国家突破五位数确诊；其中欧洲和伊朗、美国较为严重；
					</li>
					<li>四月初，国内确诊人数继续减少，但有部分省份出现略微反扑；国外疫情几乎已经扩散到世界所有国家，其中美国确诊人数已经突破20万，是世界最严重的地区；</li>
					<li>从四月中旬开始，由于外来输入原因，国内黑龙江及东北地区出现了一次比较严重的疫情反扑，确诊人数接近500，但在五月初逐步得到控制；</li>
					<li>国外疫情在四五月份继续趋向严重，在5.8美国的确诊人数突破百万；但部分早期疫情严重的国家由于采取了有效的控制手段导致疫情缓解；</li>
				</ul>
			</li>
			<li>
				<p>累计死亡人数</p>
				<ul>
					<li>二月初，世界各国开始出现死亡病例；</li>
					<li>国内的死亡病例数在二月中旬趋向平缓；</li>
					<li>在三月中旬，世界各国死亡病例陆续出现或开始明显增多；</li>
					<li>在五月份，报告的死亡数以美国、欧洲最为严重，许多国家死亡人数已经远远超过了中国；</li>
				</ul>
			</li>
			<li>
				<p>死亡率：</p>
				<ul>
					<li>死亡率也可以反应出疫情的控制程度，死亡率越低表明患者得到救治的概率越大；</li>
					<li>在医疗资源充足的地区，死亡率可以降低到1%左右；医疗资源不足的地区，死亡率可以高达10%；</li>
					<li>国内死亡率数据分析：
						<ul>
							<li>在一月下旬，中国的死亡率以黑龙江、湖北、湖南河南较为严重，但在一月底二月初除湖北外，其他省份呈下降趋势；</li>
							<li>在国内疫情确诊人数峰值的二月中旬，国内平均死亡率为2.5，死亡率相对较高的是湖北、黑龙江、海南、台湾等地；</li>
							<li>此后，国内湖北的死亡率继续升高，可能是由于医疗资源不足，无法给予患者有效救治，同时此前积累的确诊患者也陆续出现死亡；同样升高的有新疆、黑龙江；</li>
							<li>三月中旬后，在国内疫情基本得到控制的情况下，全国平均死亡率在4%，湖北死亡率达到4.7左右；</li>
							<li>在四月中旬补统计了一下之前因为新冠去世但未计入死亡率数据的死亡人数，最后湖北的死亡率为6.6，国内平均死亡率在5.5</li>
						</ul>
					</li>
					<li>国外死亡率数据分析：
						<ul>
							<li>从三月下旬开始，伴随着疫情的大规模扩散，各国疫情死亡率也逐步增高；</li>
							<li>值得注意的是，许多国家的统计数据表明在其疫情刚开始出现的数日内死亡率是一个高峰，可能表明了在初始阶段未能对患者作出良好的检测和发现，只能从新冠重症患者处得到资料；</li>
							<li>虽然非洲等某些不发达国家的疫情报告数据较少，但死亡率较高；可能表明了对于新冠的轻症患者，并没有良好的检测能力；</li>
							<li>死亡率较高的国家显著集中在欧洲地区，表明了医疗资源的相对短缺；墨西哥的死亡率也较高；</li>
						</ul>
					</li>
				</ul>
			</li>
		</ul>
		<p>总体来看：</p>
		<ul>
			<li>中国在三月份就逐步控制住了疫情趋势，为世界抗疫事业做出了卓越的典范；</li>
			<li>欧洲和美洲等发达国家疫情数据较为严重，可能是发达国家在世界范围内流动的人口较大，但更可能是发达国家能得到有效的检测并报告病例；</li>
		</ul>
		<h3 id="%E4%B8%96%E7%95%8C%E7%96%AB%E6%83%85%E6%95%B0%E6%8D%AE%E6%9B%B2%E7%BA%BF%E5%9B%BE">世界疫情数据曲线图</h3>
		<p>通过曲线图可直观地表现出确诊数据、死亡数据、治愈数据等的变化趋势，可以通过下拉框进行选择所显示的国家：</p>
		<div>
			<label>请选择国家： </label>
			<select id="selectCountrys">
				{% for cate in cates %}
				<option value="{{cate}}">{{cate}}</option>
				{% endfor %}
			</select>
			<div id="lines" style="width:1000px; height:600px;"></div>
		</div>
		<p>通过交互分析，可以将疫情数据趋势分为几种类别：</p>
		<ul>
			<li>疫情已经得到控制，如中国：</li>
			<li>疫情数据还在保持增长趋势，如美国、俄罗斯；</li>
			<li>疫情基本得到控制，现存确诊数在逐步减少，如意大利；</li>
			<li>数据太少，如多米尼克；</li>
		</ul>
		<p>同时也可以发现：</p>
		<ul>
			<li>由于检测技术或标准变化，可能出现确诊数据在短时间内的大量增多，也有的国家是每隔一段时间集中增加一次确诊数据；</li>
			<li>截止5.20，大多数国家的疫情还在上升趋势；</li>
		</ul>
		<h3
			id="%E5%85%A8%E5%9B%BD%E7%96%AB%E6%83%85%E6%96%B0%E5%A2%9E%E7%A1%AE%E8%AF%8A%E4%BA%BA%E6%95%B0%E6%97%A5%E5%8E%86%E5%9B%BE">
			全国疫情新增确诊人数日历图</h3>
		<p>日历图也可以直观的反映出当日疫情新增人数的多少；</p>
		<div id="04cd225d9bb642288bef9788ed998f30" class="chart-container"
			style="width:500px; height:300px;display: inline-block;"></div>
		<script type="text/javascript" src="{{ url_for('static',filename='calendar.js') }}"></script>
		<p>可以看到，确诊人数的增多从一月底开始，在二月中旬达到高峰后逐步回落；而三月下旬增加人数又有一次较小的上升。</p>

		<h2
			id="part-2-%E7%96%AB%E6%83%85%E8%88%86%E6%83%85%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E4%B8%8E%E5%8F%AF%E8%A7%86%E5%8C%96">
			part 2: 疫情舆情数据分析与可视化</h2>
		<h3 id="%E6%96%B0%E9%97%BB%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90%E4%B8%8E%E5%8F%AF%E8%A7%86%E5%8C%96">新闻数据分析与可视化
		</h3>
		<h4
			id="%E4%B8%AD%E5%9B%BD%E7%A4%BE%E4%BC%9A%E7%BB%84%E7%BB%87%E5%85%AC%E5%85%B1%E6%9C%8D%E5%8A%A1%E5%B9%B3%E5%8F%B0%E7%96%AB%E6%83%85%E9%98%B2%E6%8E%A7%E4%B8%93%E5%8C%BA%E6%96%B0%E9%97%BB%E8%AF%8D%E4%BA%91%E5%8F%AF%E8%A7%86%E5%8C%96">
			中国社会组织公共服务平台疫情防控专区新闻词云可视化：</h4>
		<p>我们通过爬虫技术，对中国社会组织公共服务平台疫情防控专区新闻进行了抓取，共计获得了 1-26 至 5-19 时间段内共1400+新闻；</p>
		<p>词云图，也叫文字云，是对文本中出现频率较高的“关键词”予以视觉化的展现，词云图过滤掉大量的低频低质的文本信息，使得浏览者只要一眼扫过文本就可领略文本的主旨。</p>
		<p>对该平台上发布的所有文章使用jieba进行分词、获取主题词（取排名前00位），并渲染词云图：</p>
		<div>
			<div id="c61d88ede2df46799724e4ef261fa76f" class="chart-container" style="width:900px; height:500px;"></div>
			<script type="text/javascript" src="{{ url_for('static',filename='wordcloud.js') }}"></script>
		</div>
		<p>可以看到，“疫情”、“防控”、“组织”、“工作”等词语较为突出，这也和平台的主旨相吻合；</p>
		<p>对不同日期的文章集合分别渲染词云图，可以直观地看出新闻主题随着时间的变化；</p>
		<p>可通过拖动滑块改变日期范围，每个日期范围内有约100篇新闻；</p>
		<div>
			<div>
				<label>拖动滑块即可切换日期:</label>
				<input id='sliderWord' style="width: 400px;vertical-align: middle;" type='range' min='0' max='90'
					step='1' />
			</div>
			<div id="wordcloud" style="width:1000px; height:600px;"></div>
		</div>
		<ul>
			<li>疫情前期主题词以“防控”、“组织”、“工作”、“社会”为主，对应于主要的抗疫力量为政府动员工作和社会组织捐赠</li>
			<li>后期“企业”，“复工”等词语占比越来越大，也对应着复工成为主要需求；</li>
		</ul>
		<h4 id="tf-idf%E5%80%BC">TF-IDF值</h3>
			<p>TF-IDF（Term Frequency-InversDocument
				Frequency）是一种常用于信息处理和数据挖掘的加权技术。该技术采用一种统计方法，根据字词的在文本中出现的次数和在整个语料中出现的文档频率来计算一个字词在整个语料中的重要程度。它的优点是能过滤掉一些常见的却无关紧要本的词语，同时保留影响整个文本的重要字词。
			</p>
			<p>TF - IDF = TF * IDF</p>
			<p>TF（Term Frequency）表示某个关键词在整篇文章中出现的频率。IDF（InversDocument
				Frequency）表示计算倒文本频率。文本频率是指某个关键词在整个语料所有文章中出现的次数。倒文档频率又称为逆文档频率，它是文档频率的倒数，主要用于降低所有文档中一些常见却对文档影响不大的词语的作用。
			</p>
			<img src="{{ url_for('static',filename='results/tfidf.png') }}" style="width:600px;">
			<p>输出结果如下图所示，可以看到“疫情”、“组织”、“捐赠”、“社会”、“协会”、“肺炎”、“物资”等都是高频词，也是大众普
				遍关心的主题。</p>
			<h4 id="%E5%B1%82%E6%AC%A1%E8%81%9A%E7%B1%BB%E5%88%86%E6%9E%90">层次聚类分析</h1>
				<p>对主题词进行层次聚类分析，层次聚类法的基本过程如下：</p>
				<ul>
					<li>每一个样本点视为一个簇；</li>
					<li>计算各个簇之间的距离，最近的两个簇聚合成一个新簇；</li>
					<li>重复以上过程直至最后只有一簇。</li>
				</ul>
				<p>层次聚类不指定具体的簇数，而只关注簇之间的远近，最终会形成一个树形图，可以表明相应关键词间的联系：</p>
				<img src="{{ url_for('static',filename='results/Tree_word_50.png') }}" style="width:1000px;">
				<p>可以明显地观察到，主题词可以分为三类，大致对应于三个主题板块：</p>
				<ul>
					<li>医院获取物资捐款、志愿者行动</li>
					<li>企业复工复产</li>
					<li>社会组织抗击疫情</li>
				</ul>
				<h3
					id="%E5%BE%AE%E5%8D%9A%E8%88%86%E6%83%85%E5%88%86%E6%9E%90%E4%B8%8E%E6%95%B0%E6%8D%AE%E5%8F%AF%E8%A7%86%E5%8C%96">
					微博舆情分析与数据可视化</h3>
				<h4 id="%E5%BE%AE%E5%8D%9A%E4%B8%BB%E9%A2%98%E8%AF%8D%E8%AF%8D%E4%BA%91%E5%9B%BE">微博主题词词云图：</h4>
				<p>依据与“新冠肺炎”相关的230个主题关键词进行随机数据采集的2020年1月1日—2020年2月20日期间共计100万条微博数据进行主题词计算，可绘制微博主题词词云图：</p>
				<script type="text/javascript" src="{{ url_for('static',filename='render.js') }}"></script>
				<p>分别对于每日的微博主题词进行分析，可绘制微博每日主题词词云图：</p>
				<div>
					<div>
						<label>拖动滑块即可切换日期:</label>
						<input id='sliderWeibo' style="width: 400px;vertical-align: middle;" type='range' min='0'
							max='49' step='1' />
					</div>
					<div id="weibocloud" style="width:1000px; height:600px;"></div>
				</div>
				<p>通过可视化交互分析可以发现：</p>
				<ul>
					<li>在疫情尚未大面积出现的前期，收集到的疫情相关主题词主要为2020、发烧、肺炎、穿山甲等等，疫情有关词语占主题词比例相对较少，主题词相对较为分散；其中也夹杂部分早期出现的如病毒性等描述；
					</li>
					<li>在1月12号左右，冠状病毒、肺炎等词语数量开始远大于其他非疫情相关词语；</li>
					<li>在1.23，随着武汉封城，武汉这一词汇提及次数也显著增大；</li>
					<li>在1月底二月初，疫情、新冠等词语也频繁被提及；加油这一词语也十分显著，表明了全国人民同疫情斗争的决心和对武汉的美好祝愿；</li>
					<li>该词云图也可以显著的反应出舆论热点，如2.6左右的李文亮医生去世事件就可以观察到李文亮一词在词云图中显著展示；</li>
					<li>肖战一词占比较少，但始终在词云图中出现，也许表明了在疫情期间仍然对于明星有一定的关注流量；</li>
				</ul>
				<h4 id="%E5%BE%AE%E5%8D%9A%E6%83%85%E6%84%9F%E5%88%86%E6%9E%90">微博情感分析</h4>
				<p>对微博数据采用snowNLP进行情感分析得出的情感数值，范围为-0.5 ~ 0.5，大于0为正面情感，小于0为负面情感；</p>
				<p>绘制每日平均情感数值曲线图：</p>
				<div>
					<div id="e8865e65e86c410f9666c9b174426b7d" class="chart-container"
						style="width:900px; height:500px;"></div>
					<script type="text/javascript" src="{{ url_for('static',filename='weibolines.js') }}"></script>
				</div>
				<p>总体而言，疫情相关的微博情感倾向还是偏正面或中性；在1.19前，情感平均值较高，约为0.2；在1.19，疫情开始在全国扩散开来并且钟南山宣布人传人之后，情感平均值下降到了0，1附近；在2.18、2.19时，可能由于疫情国内接近拐点，情感分析数值又有显著提高；
				</p>
				<p>其他分析和代码详见notebook；</p>

	</div>

	<script type="text/javascript" src="{{ url_for('static',filename='render.js') }}"></script>

</body>

</html>